C言語 文字列操作
code:string.c
/**
* 文字列のjoin
*/
char * join_strings(const char **strings, size_t count) {
size_t totalLength = 1;
for (size_t i = 0; i < count; i++) {
totalLength += strlen(stringsi) + (i < (count - 1) ? 1 : 0); }
// 結果となる文字列用のメモリを確保
char *result = malloc(totalLength);
if (result == NULL) {
// メモリ確保失敗
return NULL;
}
// 文字列を結合
for (size_t i = 0; i < count; i++) {
strcat(result, stringsi); if (i < (count - 1)) {
strcat(result, ",");
}
}
return result;
}
int main() {
printf("文字列の入力: ");
// &bufではない
scanf("%s", buf);
printf("文字列の出力: %s\n", buf);
// 文字列定義(静的)
// サイズをピッタリで定義する場合 文字列の長さ + 1で配列を定義する
// 変更しない文字列にはconstをつける
const char hello6 = "Hello"; const char world7 = "world!"; printf("%s, %s\n", hello, world);
// 複数個の文字列(静的)
const char abcde[]3 = { "ab", "cd", "ef" }; printf("複数の文字列の出力: \n");
for (int i = 0; i < 3; i++) {
}
// 文字列(動的配列)
// 2次元の配列(動的)
int a[] = {1, 2, 3};
// 配列の長さの算出
size_t a_size = sizeof(a) / sizeof(a0); for (size_t i = 0; i < a_size; i++) {
char *str = malloc(20);
}
char *joinedString = join_strings((const char **)strArray, a_size);
if (joinedString != NULL) {
printf("%s\n", joinedString); free(joinedString);
}
// 文字列→数値
char *e;
scanf("%s", str);
const int s1 = (int)strtol(str, &e, 10);
printf("%d", s1);
}
code:memo
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1813 0 1813 0 0 2142 0 --:--:-- --:--:-- --:--:-- 2143
文字列の入力: asdf
文字列の出力: asdf
Hello, world!
複数の文字列の出力:
ab
cd
ef
確認用
Q. C言語 文字列操作
参考
メモ
調査用